/**
 * 出差管理模块
 * 负责管理员工出差信息，包括出差目的地、时间、原因和审批状态等
 */

// 定义状态
const state = {
  // 出差列表，包含初始数据
  list: [
    { id: 1, employeeName: '张三', department: '技术部', destination: '北京', startDate: '2025-07-20', endDate: '2025-07-22', days: 3, reason: '参加技术交流会', status: 'pending' },
    { id: 2, employeeName: '李四', department: '市场部', destination: '上海', startDate: '2025-03-25', endDate: '2025-03-26', days: 2, reason: '客户拜访', status: 'approved' }
  ]
}

// 定义mutation
const mutations = {
  // 设置出差列表
  SET_LIST(state, list) { state.list = list },
  // 添加新出差记录
  ADD_TRIP(state, item) { state.list.push(item) },
  // 编辑出差记录
  EDIT_TRIP(state, item) {
    const idx = state.list.findIndex(t => t.id === item.id)
    if (idx !== -1) state.list.splice(idx, 1, item)
  },
  // 删除出差记录
  DELETE_TRIP(state, id) {
    state.list = state.list.filter(t => t.id !== id)
  },
  // 更新出差状态
  UPDATE_TRIP_STATUS(state, { id, status }) {
    const trip = state.list.find(t => t.id === id);
    if (trip) {
      trip.status = status;
    }
  }
}

// 定义action
const actions = {
  // 获取出差列表
  fetchList({ commit, state }) {
    // 如果已有数据，直接使用
    if (state.list && state.list.length > 0) {
      console.log('businessTrip.js: state already populated, skipping initial fetch');
      return;
    }
    commit('SET_LIST', state.list)
  },

  // 添加新出差记录
  addTrip({ commit, state }, item) {
    // 生成新出差记录ID
    item.id = state.list.length ? Math.max(...state.list.map(t => t.id)) + 1 : 1
    commit('ADD_TRIP', item)
  },

  // 编辑出差记录
  editTrip({ commit }, item) {
    commit('EDIT_TRIP', item)
  },

  // 删除出差记录
  deleteTrip({ commit }, id) {
    commit('DELETE_TRIP', id)
  },

  // 审批出差申请
  approveTrip({ commit }, { id, status }) {
    commit('UPDATE_TRIP_STATUS', { id, status });
  }
}

// 导出模块
export default {
  namespaced: true, // 启用命名空间
  state,
  mutations,
  actions
} 